/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ui;

import SAToDA.*;
import data.DataBaseConnectionException;
import data.InterfaceBanco;
import data.InternalDataBaseException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.RowFilter;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableRowSorter;

/**
 *
 * @author ra121096
 */
public class JanelaProcuraEquivalencias extends javax.swing.JFrame {

    // Estados
    public static final int ESCOLHENDO_ANO_I = 0;
    public static final int ESCOLHENDO_CURSO = 1;
    public static final int MOSTRANDO_LISTA = 2;
    public static final int CATALOGO_SEM_CURSOS = 3;
    

    private int estadoAtual;
    static final int[] catalogosDisponiveis = {2014, 2013, 2012, 2011, 2010};
    //2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000};

    private Catalogo catalogoAno1;

    private MyTableModel modelo = new MyTableModel();
    private TableRowSorter<MyTableModel> sorter;

    public JanelaProcuraEquivalencias() {
        initComponents();

        atualizaEstado(ESCOLHENDO_ANO_I);
    }

    /**
     * Estado em que a janela se encontra no momento para verificar qual o
     * próximo comando deve ser executado
     *
     * @return - número do estado
     */
    public int getEstado() {
        return this.estadoAtual;
    }

    private void atualizaEstado(int novoEstado) {
        this.estadoAtual = novoEstado;

        switch (estadoAtual) {
            case ESCOLHENDO_ANO_I:
                chCurso.setEnabled(false);
                chAno2.setEnabled(false);
                jLInfo.setText("Info: Selecione os anos dos catálogos e em sequida o nome do curso");
                iniciaListaAno1();
                break;
            case ESCOLHENDO_CURSO:
                chAno2.setEnabled(true);
                chCurso.setEnabled(true);
                jLInfo.setText("Info: Selecione os anos dos catálogos e em sequida o nome do curso");
                atualizaListaAno2();
                atualizaCursos();
                break;
            case MOSTRANDO_LISTA:
                jLInfo.setText("Info: Digite o nome da disciplina procurada ou parte dele no filtro e tecle ENTER");
                atualizaTabela();
                break;
            case CATALOGO_SEM_CURSOS:
                String errorMessage = "Não exitem cursos registrados no catálogo de " + 
                        catalogosDisponiveis[chAno1.getSelectedIndex()];
                jLInfo.setText(errorMessage);
                chCurso.setEnabled(false);
                break;
            default:
                break;
        }
    }

    /**
     * Este metodo preenche a lista de cursos disponíveis baseado nos cursos
     * oferecidos no catálogo selecionado no menu de seleção "Ano 1"
     *
     * @author Grupo G2
     */
    private void atualizaCursos() {

        ArrayList<Curso> cursosAno1;

        chCurso.removeAll();

        InterfaceBanco ib = InterfaceBanco.getInterfaceBanco();

        try {
            catalogoAno1 = ib.getCatalogo(catalogosDisponiveis[chAno1.getSelectedIndex()]);
            cursosAno1 = catalogoAno1.getCursos();

            //Caso não haja cursos
            if (cursosAno1.isEmpty()) {
                atualizaEstado(CATALOGO_SEM_CURSOS);
            } else {

                for (Curso curso : cursosAno1) {
                    chCurso.add(curso.getNome());
                }
                chCurso.insert("Selecione o curso...", 0);
            }
        } catch (InternalDataBaseException e) {
            String errorMessage = "Ocorreu um problema interno. Entre em contato com o responsável pela manutenção do sistema";
            JOptionPane.showMessageDialog(null, errorMessage, "Erro", JOptionPane.ERROR_MESSAGE);
        }
    }

    /**
     * Este metodo preenche a lista de cursos disponíveis baseado nos cursos
     * oferecidos no catálogo selecionado no menu de seleção "Ano 1"
     *
     * @author Grupo G2
     */
    /*    private void atualizaCursosComArquivos() {

     ArrayList<Curso> cursosAno1;

     chCurso.removeAll();

     try {
     catalogoAno1 = new CatalogoDeArquivo(catalogosDisponiveis[chAno1.getSelectedIndex()]);

     /*
     Uma vez que a lista de cursos oferecidos no catálogo selecionado é obtida e
     armazenada em "cursosAno1", esta lista é percorrida e os cursos são adicionados
     ao menu de seleção "Cursos"
             
     cursosAno1 = catalogoAno1.getCursos();

     for (Curso cursosAno11 : cursosAno1) {
     chCurso.add(cursosAno11.getNome());
     }
     chCurso.insert("Selecione o curso...", 0);

     } catch (FileNotFoundException ex) {
     String errorMessage = "Não exitem informações sobre o catálogo " + catalogosDisponiveis[chAno1.getSelectedIndex()];
     jLInfo.setText(errorMessage);
     chCurso.setEnabled(false);

     errorMessage += ". Entre em contato com o responsável pela manutenção do sistema";
     JOptionPane.showMessageDialog(null, errorMessage, "Erro", JOptionPane.ERROR_MESSAGE);
     } catch (IOException ex2) {
     String errorMessage = "Ocorreu um problema interno. Entre em contato com o responsável pela manutenção do sistema";
     JOptionPane.showMessageDialog(null, errorMessage, "Erro", JOptionPane.ERROR_MESSAGE);
     }

     }
     */
    
    /**
     * Este método inicaliza a lista de anos de catálogos disponíveis dos menus
     * de seleção "Ano 1"
     *
     * @author Grupo G2
     */
    private void iniciaListaAno1() {
        for (int i = 0; i < catalogosDisponiveis.length; i++) {
            chAno1.add(String.valueOf(catalogosDisponiveis[i]));
        }
        chAno1.insert("Selecione...", 0);
    }

    /**
     * Este método é responsável por atualizar a lista dos catálogos disponíveis
     * do menu de seleção "Ano 2", baseado no catálogo selecionado no menu de
     * seleção "Ano 1"
     *
     * @author Grupo G2
     */
    private void atualizaListaAno2() {

        String ultimaOpcao;

        ultimaOpcao = chAno2.getSelectedItem();

        //Remove todos os anos e recoloca somete os anos diferentes do ano 1
        chAno2.removeAll();

        for (int i = 0; i < catalogosDisponiveis.length; i++) {
            chAno2.add(String.valueOf(catalogosDisponiveis[i]));
        }
        chAno2.remove(String.valueOf(catalogosDisponiveis[chAno1.getSelectedIndex()]));

        //Mantém a opção escolhida no ano 2 caso seja diferente do ano 1
        if (ultimaOpcao != null) {
            if (ultimaOpcao.compareTo(chAno1.getSelectedItem()) != 0) {
                chAno2.select(ultimaOpcao);
            }
        }

    }

    /**
     * Atualiza a tabela com as disciplinas equivalentes
     *
     * @author Grupo G2
     */
    private void atualizaTabela() {

        ArrayList<Equivalencia> equivalencias;

        String[] columnNames = {"Disciplina Ano 1", "Equivalente Ano 2"};
        Object[][] data = {{"Nenhuma", "Nenhuma"}};

        if (chCurso.getSelectedIndex() > 0) {
            InterfaceBanco ib = InterfaceBanco.getInterfaceBanco();
            equivalencias = null;
            try {
                int codigoCurso = catalogoAno1.getCursos()
                        .get(chCurso.getSelectedIndex() - 1).getCodigo();
                equivalencias = ib.getDisciplinasEquivalentes(
                        codigoCurso,
                        Integer.parseInt(chAno1.getSelectedItem()),
                        Integer.parseInt(chAno2.getSelectedItem()));
            } catch (InternalDataBaseException e) {
                String errorMessage = "Ocorreu um problema interno. Entre em contato com o responsável pela manutenção do sistema";
                JOptionPane.showMessageDialog(null, errorMessage, "Erro", JOptionPane.ERROR_MESSAGE);
            }

            if (equivalencias != null) {
                if (equivalencias.size() > 0) {

                    data = new Object[equivalencias.size()][2];

                    for (int i = 0; i < equivalencias.size(); i++) {
                        Equivalencia eq = equivalencias.get(i);
                        data[i][0] = eq.getDisciplina().getCodigo()
                                + " - " + eq.getDisciplina().getNome();
                        data[i][1] = eq.getDisciplinaEquivalente().getCodigo()
                                + " - " + eq.getDisciplinaEquivalente().getNome();
                    }
                }
            }
        }

        modelo = new MyTableModel(columnNames, data);
        sorter = new TableRowSorter<>(modelo);
        jTableEquivalencias.setModel(modelo);
        jTableEquivalencias.setRowSorter(sorter);
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jDialog1 = new javax.swing.JDialog();
        jDialog2 = new javax.swing.JDialog();
        jPanel1 = new javax.swing.JPanel();
        chAno1 = new java.awt.Choice();
        label1 = new java.awt.Label();
        label2 = new java.awt.Label();
        chAno2 = new java.awt.Choice();
        chCurso = new java.awt.Choice();
        label4 = new java.awt.Label();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTableEquivalencias = new javax.swing.JTable();
        jTFFiltro = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jPanel2 = new javax.swing.JPanel();
        jLInfo = new javax.swing.JLabel();

        javax.swing.GroupLayout jDialog1Layout = new javax.swing.GroupLayout(jDialog1.getContentPane());
        jDialog1.getContentPane().setLayout(jDialog1Layout);
        jDialog1Layout.setHorizontalGroup(
            jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        jDialog1Layout.setVerticalGroup(
            jDialog1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout jDialog2Layout = new javax.swing.GroupLayout(jDialog2.getContentPane());
        jDialog2.getContentPane().setLayout(jDialog2Layout);
        jDialog2Layout.setHorizontalGroup(
            jDialog2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 400, Short.MAX_VALUE)
        );
        jDialog2Layout.setVerticalGroup(
            jDialog2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 300, Short.MAX_VALUE)
        );

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Equivalencias de Catalogos");
        setBounds(new java.awt.Rectangle(0, 0, 690, 500));
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosed(java.awt.event.WindowEvent evt) {
                formWindowClosed(evt);
            }
            public void windowOpened(java.awt.event.WindowEvent evt) {
                formWindowOpened(evt);
            }
        });

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Catálogos"));

        chAno1.setName(""); // NOI18N
        chAno1.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                chAno1ItemStateChanged(evt);
            }
        });

        label1.setText("Ano 1");

        label2.setText("Ano 2");

        chAno2.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                chAno2ItemStateChanged(evt);
            }
        });

        chCurso.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                chCursoItemStateChanged(evt);
            }
        });

        label4.setText("Curso");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(label4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(chCurso, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(chAno1, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(label2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(chAno2, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, Short.MAX_VALUE)))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(label1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(chAno1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(label2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(chAno2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 20, Short.MAX_VALUE)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(label4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(chCurso, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        chAno1.getAccessibleContext().setAccessibleName("");

        jTableEquivalencias.setAutoCreateRowSorter(true);
        jTableEquivalencias.setModel(modelo);
        jTableEquivalencias.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        jScrollPane1.setViewportView(jTableEquivalencias);

        jTFFiltro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTFFiltroActionPerformed(evt);
            }
        });

        jLabel2.setText("Filtro");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLInfo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jLInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jScrollPane1)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jTFFiltro, javax.swing.GroupLayout.PREFERRED_SIZE, 611, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 265, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jTFFiltro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        getAccessibleContext().setAccessibleName("null");
    }// </editor-fold>//GEN-END:initComponents

    private void chAno1ItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_chAno1ItemStateChanged

        //Retira o item inicial que indica que se deve selecionar um ano
        if (chAno1.getItem(0).compareTo("Selecione...") == 0) {
            chAno1.remove("Selecione...");
        }

        atualizaEstado(ESCOLHENDO_CURSO);
    }//GEN-LAST:event_chAno1ItemStateChanged

    private void jTFFiltroActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTFFiltroActionPerformed
        RowFilter<MyTableModel, Object> rf;
        //Se o parse não ocorrer nao atualiza a tabela
        try {
            rf = RowFilter.regexFilter(jTFFiltro.getText(), 0);
        } catch (java.util.regex.PatternSyntaxException e) {
            return;
        }
        sorter.setRowFilter(rf);
    }//GEN-LAST:event_jTFFiltroActionPerformed

    private void chCursoItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_chCursoItemStateChanged
        atualizaEstado(MOSTRANDO_LISTA);
    }//GEN-LAST:event_chCursoItemStateChanged

    private void chAno2ItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_chAno2ItemStateChanged
        if (this.estadoAtual == MOSTRANDO_LISTA) {
            atualizaTabela();
        }
    }//GEN-LAST:event_chAno2ItemStateChanged

    private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
        try {
            //Conecta ao banco de dados
            InterfaceBanco.getInterfaceBanco().conecta();
        } catch (DataBaseConnectionException ex) {
            String errorMessage = "Não foi possível se conectar ao banco de dados. "
                    + "Entre em contato com o responsável pela manutenção do sistema";
            JOptionPane.showMessageDialog(null, errorMessage, "Erro", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_formWindowOpened

    private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
        try {
            InterfaceBanco.getInterfaceBanco().desconecta();
        } catch (DataBaseConnectionException e) {
            String errorMessage = "Não foi possível desconectar do banco de dados. Entre em contato com o responsável pela manutenção do sistema";
            JOptionPane.showMessageDialog(null, errorMessage, "Erro", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_formWindowClosed

    class MyTableModel extends AbstractTableModel {

        private String[] columnNames = {};
        private Object[][] data = {{}};

        public MyTableModel() {
        }

        public MyTableModel(String[] cn, Object[][] d) {
            columnNames = cn;
            data = d;
        }

        @Override
        public int getColumnCount() {
            return columnNames.length;
        }

        @Override
        public int getRowCount() {
            return data.length;
        }

        @Override
        public String getColumnName(int col) {
            return columnNames[col];
        }

        @Override
        public Object getValueAt(int row, int col) {
            return data[row][col];
        }

        @Override
        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }
    }

    public static void main(String args[]) {

        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new JanelaProcuraEquivalencias().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private java.awt.Choice chAno1;
    private java.awt.Choice chAno2;
    private java.awt.Choice chCurso;
    private javax.swing.JDialog jDialog1;
    private javax.swing.JDialog jDialog2;
    private javax.swing.JLabel jLInfo;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField jTFFiltro;
    private javax.swing.JTable jTableEquivalencias;
    private java.awt.Label label1;
    private java.awt.Label label2;
    private java.awt.Label label4;
    // End of variables declaration//GEN-END:variables
}
